As it is expected that the number of connected Internet of Things (IoT) devices will grow, the cost and efficacy considerations are likely going to dictate that many embedded devices will never have permanent connectivity—often because they have to run on a battery or other limited energy source (e.g. solar, wind, water flow, etc.). These devices may contain critical bugs, they can be compromised, etc., and it is therefore important that they receive firmware/software updates. For unconnected embedded devices (like toasters, plant watering devices, valves, locks, etc.) or those designed to only provide one-way upstream communications (like weather records, various meters/sensors, etc.) the problem of updating may become critical. For example, a battery-operated lock may have a security problem which may be fixed via a firmware update. Or a robotic vacuum may get a software update to improve the cleaning algorithms and prolong per-charge cleaning cycles. Or an electric meter may use outdated cryptography functions which must be refreshed to maintain confidentiality.
Many modern system-on-chip (SoC) designs (for example, SoC suppliers like Samsung (http://www.samsung.com/global/business/semiconductor/news-events/press-releases/detail?newsId=13741), Texas Instruments (http://www.ti.com/product/trf7970A), etc.) contain a CPU with a flash storage updateable via near-field communications (NFC). However, delivering updates to a multitude of such home or industrial IoT devices is problematic, even if NFC allows updating without physically disassembling the device. The problems lay in finding all devices (can be dozens in a home environment and up to thousands in a factory or millions in a city) that require updating and then fetching and applying correct updates. With a growing number of unconnected devices a scalable automated updating solution will be required. There are no known solutions for this problem—unconnected devices generally stay un-updated (with the assumption that their factory testing is adequate for indefinite use and so the algorithms in firmware will stay permanently adequate). General (but incorrect) assumption is that unconnected devices are primitive and therefore fully testable at the factory, and are at low risk of attack and may be cheaply replaced—hence, there is no need to invest in updating them. These assumptions are not always correct, and there is growing understanding that most electronic devices may be required to be updatable (or have limited lifetime; which may be wasteful and inefficient).
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art.